home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9411 / XPROG.CD < prev   
Text File  |  1994-11-23  |  22KB  |  367 lines

  1.           @VAz X Window System felépítése, programozása@N
  2.  
  3.           @VAblakozó rendszer, behálózva@N
  4.  
  5.           A    népszerû    számítástechnika    világában    --   fôleg
  6.           Magyarországon  --  a  technológia  értékelése egy számszerû
  7.           teljesítmény-mutató  orientált  értékrend  szerint történik.
  8.           A  legtöbb  értékelésnél  egy-egy  számmal  jelzik egy adott
  9.           szoftver illetve hardver rendszer vagy elem minôségét.
  10.  
  11.  
  12.  
  13.           Ez  természetesen  tökéletesen  rendben  van  akkor,  ha  az
  14.           összes  fontos mutatót számbavesszük és megfelelôen objektív
  15.           rendszer   alapján   pontozunk.   Emiatt   sokszor  egyfajta
  16.           lista-mánia  alakul ki: az a jobb termék, amelynek az elemei
  17.           nagyobb  listát  eredményeznek a dobozon. Amellett, hogy így
  18.           a   rendszer  összehangoltságára  kevés  hangsúly  kerül  (a
  19.           modularitás   eszközének   birtokában   ennek   úgyis  külön
  20.           számbaveendô  elemmé kellene válnia), megindul a vadászat az
  21.           újabb   listaelemek   után:  magasabb  verziószám,  gyorsabb
  22.           processzor,  nagyobb  merevlemezigény  után.  A  valós igény
  23.           kielégítésére   pedig   sokszor   sokkal  kisebb  kapacitású
  24.           eszközök is elegendôek lennének.
  25.  
  26.           A  szoftverek  általában  a  legjobb  hardvert  feltételezve
  27.           készülnek,  azon  nyújtanak  elfogadható teljesítményt -- az
  28.           egyre  jobb hardver minôsége pedig elfedi a szoftver sokszor
  29.           meglévô  problémáit.  Ezek  pedig  a verziószámmal arányosan
  30.           nônek.  Az ilyen, egyre rendezetlenebb rendszerek ellentétei
  31.           azok,  amelyeket  eleve  jól  terveztek meg, és fejlesztésük
  32.           nem  egyszerûen  újabb  sallangok  hozzáadásában  merül  ki,
  33.           hanem    egy   alapgondolathoz   illeszkedve,   a   rendszer
  34.           architektúrájába   szervesen  beleillô  módon  történik.  Az
  35.           átgondolatlanságok  káoszából  kivezetô  utat  csak a gondos
  36.           tervezés adhat.
  37.  
  38.           Ebben   a   cikkben   az   X  Window  System  felépítésének,
  39.           programozásának  alapjairól lesz szó. Ez -- még az alapoknál
  40.           maradva  is  --  elég  nagy  téma,  így  egy  cikk csak nagy
  41.           vonalakban  ad  lehetôséget a tárgyalására. Összehasonlítási
  42.           alapul  a  Microsoft  Windowst  vehetjük, hiszen azt majdnem
  43.           mindenki  ismeri.  Bár  látni fogjuk, hogy a kinézeten kívül
  44.           nem  sok  hasonlóság  fedezhetô  fel  a két rendszer között,
  45.           mégis  jó  erre  a  célra az MS-Windows, mivel a különbségek
  46.           segítségével      könnyebben      kiemelhetjük      az     X
  47.           jellegzetességeit.
  48.  
  49.  
  50.                           @VWindows kontra X Window@N
  51.  
  52.           Mielôtt  az  X  és az MS-Windows különbségeit részletesebben
  53.           elemeznénk,  vegyük  szemügyre,  hogy  mi  is  e különbségek
  54.           valódi  oka,  és  a rendszerek fejlôdésének szempontjából ez
  55.           az ok milyen lényeges különbségekre vezet.
  56.  
  57.           Az  X  és  az MS-Windows különbségének alapvetô oka az, hogy
  58.           az  egyiket egy egyetem, a másikat egy cég tervezte. Egy cég
  59.           nyilván   a  közvetlen  anyagi  haszon  miatt  dolgozik,  az
  60.           egyetemi  fejlesztési  programok célja pedig másfajta haszon
  61.           szerzése:   a   személyes   tényezôktôl   eltekintve,  az  X
  62.           létrehozásának  célja  maga  az  X  volt,  pontosabban, hogy
  63.           létrehozzanak  egy  olyan  rendszert, amely a tervezés elôtt
  64.           lefektetett  alapelveknek  és  a  tervezés  során  felmerülô
  65.           technikai követelményeknek minél jobban megfelel.
  66.  
  67.           Technikailag  a  Microsoft  Windows rendszerének az a célja,
  68.           hogy  az  IBM  PC  kompatibilis gépek mindennapi használatát
  69.           (szövegszerkesztés    stb.)    megkönnyítse,   és   enyhítse
  70.           valamelyest  a  DOS  használatával járó kényelmetlenségeket.
  71.           Az   X  céljai  között  is  szerepel  a  parancssor-központú
  72.           kezelési    (felhasználói)   felület   megtanulásával   járó
  73.           bonyodalmak  enyhítése,  de  nem  ez  az  elsôdleges.  Az  X
  74.           tervezésénél  az  alapgondolat a hálózat-központúság volt: a
  75.           rendszer   a   feladatokat   egymással   megosztó  programok
  76.           kommunikációján, az ezt szabályozó protokollon alapul.
  77.  
  78.           Sokan  szinonímaként használják az ""ablakozó rendszer" és a
  79.           ""grafikus    kezelési    felület"    kifejezéseket,   mivel
  80.           mindennapi   tapasztalatainkban   az   MS-Windows  egybefûzi
  81.           azokat.  Pedig  elég csak a szavak jelentését végiggondolni,
  82.           és  észrevehetjük,  hogy  a  két  dolog  alapjában véve más.
  83.           Bárki  el  tud  képzelni szöveges módú ablakozó rendszert és
  84.           ablakok  nélküli  grafikus kezelési felületet. Az MS-Windows
  85.           tulajdonképpen   e  kettônek  az  ötvözete,  míg  az  X  egy
  86.           ablakozó rendszer.
  87.  
  88.  
  89.                            @VTechnikai különbségek@N
  90.  
  91.           Ezek  után  térjünk  a technikai különbségekre. Az X nem egy
  92.           program.   Míg   a   Windows-DOS   együttes   tulajdonképpen
  93.           egyfajta  programfuttató  rendszert alkot, és a Windowst DOS
  94.           alatt  egy  programként  indítjuk,  az  X  alapját  --  az X
  95.           rendszer  magját  --  egy  hálózati  protokoll  képezi, az X
  96.           Window System Protocol.
  97.  
  98.           A  protokollok  általában  a  kettô  (vagy több) fél közötti
  99.           kommunikációt   teszik   lehetôvé,   mire   való  hát  az  X
  100.           protokoll?  Az  X  protokoll  a  kliens és a szerver közötti
  101.           kommunikációra  szolgál. A szerver program kezeli a bemeneti
  102.           és  kimeneti  eszközöket  --  a  hardver  erôforrásokat  --,
  103.           felügyel   a   szoftver   erôforrásokra   (ezekrôl  bôvebben
  104.           késôbb),  fenntartja  a kapcsolatot a kliens programokkal és
  105.           teljesíti   kéréseiket.  Ilyen  kérés  például  az,  hogy  a
  106.           szerver  rajzoljon  valamit valahova, helyezze át az ablakot
  107.           stb.  E  feladatokat  tehát  nem  a kliens program végzi el,
  108.           hanem  a szerver. A kliens csak utasít: ez azt jelenti, hogy
  109.           --  mivel  a  protokoll  minden  szerver esetében ugyanaz --
  110.           elég  a szervert úgy megírni, hogy tudja használni az alatta
  111.           lévô  hardvert,  a  kliens  programnak  már  nem  kell ezzel
  112.           foglalkoznia.
  113.  
  114.           A   kliens   programok  általában  olyan  programok,  amiket
  115.           Windows    alatt   ""alkalmazásoknak"   nevezünk,   de   sok
  116.           feladatot,  amit  Windows  esetében maga a Windows lát el, X
  117.           alatt  kliens programok végeznek. Ezzel elérkeztünk az X egy
  118.           másik  alapelvéhez:  a  protokoll  a  problémák megoldásához
  119.           mechanizmust   szolgáltat   és   nem  irányelvet:  a  lehetô
  120.           legnagyobb  szabadságot  adja  meg  a  programtervezônek. Ez
  121.           abban   is  megnyilvánul,  hogy  sok  feladatot  a  rendszer
  122.           legalsó   rétegeiben  meg  se  fogalmaznak,  csak  általános
  123.           eszközöket  adnak  a programozónak. (A pontosság kedvéért: a
  124.           kliens   szigorúan   véve  nem  program,  hanem  maga  az  a
  125.           csatorna,  amelyen  keresztül a program kapcsolatot teremt a
  126.           szerverrel.   Ez   érthetô,   ha   belegondolunk,  hogy  egy
  127.           programnak  nem  kötelessége  futásának  teljes  ideje alatt
  128.           fenntartania  a kapcsolatot egy szerverrel, ha viszont nincs
  129.           szerver,  hogyan legyen kliens; másrészt pedig ha figyelembe
  130.           vesszük   azt,   hogy   egy   program  több  kapcsolatot  is
  131.           fenntarthat  ugyanazzal a szerverrel, a szervernek pedig nem
  132.           is kell tudnia, hogy ugyanarról a programról van szó.)
  133.  
  134.  
  135.                          @VAz X programozási szintek@N
  136.  
  137.           Persze  rögtön  felmerül  a  kérdés:  hogyan programozzunk X
  138.           alatt?   Elég   csúnyán   néznének   ki  azok  a  programok,
  139.           amelyeket  közvetlenül  az  X protokollra írnánk, hiszen egy
  140.           ablakot   nem  egy  függvényhívással  hoznánk  létre,  hanem
  141.           mindenféle  üzenetek  küldözgetésével, ráadásul még egyetlen
  142.           ablak   létrehozása  is  igen  hosszadalmas  feladat,  annyi
  143.           paramétert  kell  a szervernek szolgáltatni. Természetesen a
  144.           szerver  oldaláról  érkezô  üzeneteket is fel kell dolgozni,
  145.           ami  nem egyszerûsíti le a problémát. Tehát ha egy programot
  146.           közvetlenül  az  X  rendszerprotokoll  alá  kellene megírni,
  147.           akkor  elég  sok,  nehezen  megoldható,  és sok bonyodalmat,
  148.           kuszaságot  --  strukturálhatatlanságot -- okozó problémával
  149.           kellene megbirkóznunk.
  150.  
  151.           A  legegyszerûbb  megoldás  erre  az,  ha a protokoll minden
  152.           egyes  elemének (kérésnek, üzenetnek) megfeleltetünk egy-egy
  153.           függvényhívást,   és   létrehozunk   egy   könyvtárat,   ami
  154.           tartalmazza  ezeket.  A  hosszú paraméterlisták megmaradnak,
  155.           de   most   már   függvénnyel   tudunk   létrehozni  például
  156.           ablakokat.    Az    X   programozásának   tulajdonképpen   a
  157.           legalacsonyabb   szintjén  ennek  a  megoldásnak  egy  --  a
  158.           programozást  jelentôsen  egyszerûsítô -- alapbeállításokkal
  159.           kibôvített     változata    áll.    Ez    az    Xlib    nevû
  160.           szubrutinkönyvtár.
  161.  
  162.           Az  egyik legfeltûnôbb különbség a Microsoft Windows és az X
  163.           programozása   között   az,  hogy  az  MS-Windowst  egyetlen
  164.           szinten  lehet  csak programozni, a Windows API szintjén. Ez
  165.           a  szint  sok tekintetben közel áll az Xlib szinthez (hosszú
  166.           paraméterlisták  stb.),  de  van  sok  jóval magasabb szintû
  167.           szolgáltatása  (például  editorablakok),  amelyek  az  X-nél
  168.           csak  a  legmagasabb  szinteken  jelennek  meg.  (Nem szabad
  169.           persze  elfelednünk,  hogy  a  Windows  API  függvényhívásai
  170.           tulajdonképpen   rendszerhívások,  belépési  pontok  a  futó
  171.           Windows  magba,  az  Xlib függvényhívások pedig egy hálózati
  172.           protokoll  elemeire  fordítódnak  le.)  Mivel  az MS-Windows
  173.           kezelési  felület  feladatokat  is  ellát,  valamint egy cég
  174.           támogatja,   kezelési  felület  tervezésére  külön  hatékony
  175.           eszközöket    nyújt    a   programozónak   --   míg   az   X
  176.           programozásának   ezen   a   szintjén   bonyolult   kezelési
  177.           felületeket  tervezni  nehéz,  így  a Windows API és az Xlib
  178.           szint hasonlósága nem egyértelmû.
  179.  
  180.           Az  Xlib tehát alacsony szintû programozást tesz lehetôvé --
  181.           ez  azt  jelenti,  hogy  a forráskód nagyon hosszú lesz, sok
  182.           idôt  vesz  igénybe  a  létrehozása,  viszont  az  X  minden
  183.           lehetôségét  közvetlenül  ki  lehet vele használni. Valahogy
  184.           úgy  vagyunk  itt  is,  mint  ahogy  az assembly nyelvekkel:
  185.           jobb  mint  a  gépi  kód (a protokoll), de pár ezer sor után
  186.           már  összetett  feladat mindent kézben tartani -- ugyanakkor
  187.           van  néhány  dolog, amit csak ilyen alacsony szinten érdemes
  188.           vagy lehet megoldani.
  189.  
  190.           Persze   a   mai   programozóknak  nyilvánvaló  a  megoldás:
  191.           használjunk   objektumorientált   programozási  technikákat!
  192.           Bár  az  objektumorientáltság  sok  helyen inkább divat mint
  193.           szükség,  nagyon  hatékony  eszköz,  ha  megtaláljuk hozzá a
  194.           megfelelô  feladatot.  És egy X-szerû rendszer programozását
  195.           valóban  nagyon jól megoldhatjuk objektumorientált alapokon.
  196.           Bár  amikor  ezt  a  rendszert  kitalálták,  még  nem voltak
  197.           annyira    elterjedtek   a   kifejezetten   OOP-t   támogató
  198.           programozási  eszközök,  az  X  fejlesztôi mégis ezt az utat
  199.           választották.       Nincsen      mindig      szükség      az
  200.           objektumorientáltság  összes  elônyére, megvalósíthatjuk azt
  201.           egyszerû  C-ben is, gondolták, és a gondolatot tett követte:
  202.           az  eredmény  az  X  Toolkit.  (A  helyzet mára, az X11 6-os
  203.           verziójának  megszületésével  megváltozott:  a  Fresco  az X
  204.           Toolkithez  hasonló,  de C++-ra épülô programozási felület.)
  205.           Az  X  Toolkit  magja  szintén  egy  C nyelvû könyvtár, az X
  206.           Toolkit Intrinsics (Xt).
  207.  
  208.           Az  X  Toolkit  tulajdonképpen lehetôséget ad olyan egységek
  209.           létrehozására,  amelyek  egyrészt  a program struktúrájában,
  210.           másrészt  pedig  az  adott  program kezelési felületén belül
  211.           léteznek.  Ezeket  az  objektumokat widgetnek (window gadget
  212.           --  ablak-szerkentyû) hívják. Ilyenek például a nyomógombok,
  213.           legördülô menük stb.
  214.  
  215.           Widgetekbôl  és  más  kezelési  felület  feladatokat elvégzô
  216.           kliensekbôl   állnak   össze   aztán  a  legmagasabb  szintû
  217.           kezelési  felület  rendszerek.  A  legfontosabb ezek közül a
  218.           szabvánnyá   elôlépett   Motif   (az  OSF  és  a  DEC  által
  219.           támogatott  kezelési  felület  rendszer.)  A  Sun és az AT&T
  220.           által kifejlesztett OpenLookkal is találkozhatunk még.
  221.  
  222.  
  223.                      @VKapcsolatrendszer: az X protokoll@N
  224.  
  225.           Egy   X-es  program  futása  során  lényegében  a  következô
  226.           kapcsolatrendszer  jön  létre:  a  szerver egy kommunikációs
  227.           csatornán  keresztül  kapcsolatban van egy másik programmal,
  228.           mindketten  ugyanazt  a  protokollt  használják. E kapcsolat
  229.           (egy  X  alatti  program  futásának)  a  fôszereplôi tehát a
  230.           szerver,  a kliens program és a protokoll. Most a szerver és
  231.           a     kliens    feladatait    vizsgáljuk    meg    valamivel
  232.           részletesebben.
  233.  
  234.           A  szerver  elôször  is  képes a hardver erôforrások, azaz a
  235.           grafikus    megjelenítô    egység    (monitor    stb.),    a
  236.           mutatóeszközök   (egér,   trackball)   és   a   billentyûzet
  237.           kezelésére.  Képes  a  szoftver  erôforrások  kezelésére is,
  238.           ilyenek   az   ablakok,  a  pixmapek  (hasonlóak  a  Windows
  239.           bitmapjeihez),  a  kurzorok  és  a  fontok. Ezeken kívül még
  240.           kétfajta   szoftver   erôforrás  létezik,  ezek  a  grafikus
  241.           kontextusok  és  a  színtáblák.  Egy  grafikus kontextus egy
  242.           rajzolás   paramétereit  tárolja  (vonal  vastagsága,  színe
  243.           stb.),  a  színkezelést pedig az X a színtáblák segítségével
  244.           valósítja   meg.   Egy   színtábla   színcellákból   áll,  a
  245.           színcellák  pedig  RGB  értékeket  tárolnak.  Egy-egy  pixel
  246.           tulajdonképpen  egy  színcellát  címez,  a  valódi  szín ott
  247.           tárolódik.  Az,  hogy  egy színcellán belül hány biten kerül
  248.           tárolásra   az   RGB   érték,  hogy  hány  biten  és  milyen
  249.           módszerrel   indexeljük  a  színtáblát,  változó,  az  adott
  250.           szerverre jellemzô.
  251.  
  252.           Ezenkívül   feladata   a   szervernek   a   klienssel   való
  253.           kommunikáció:   a   szerver  a  kliens  kéréseit  teljesíti,
  254.           esetleg   válaszol  rájuk,  valamint  bizonyos  eseményekrôl
  255.           értesíti  a  kliens programot. A protokollnak tehát képesnek
  256.           kell lennie e háromféle üzenet továbbítására.
  257.  
  258.           A  kliensek szerverrel való kommunikációjával válik lehetôvé
  259.           a   kliensek   közötti   kommunikáció  megvalósítása.  Ez  a
  260.           postaládának  nevezett  objektumokkal történik. A postaládák
  261.           tartalmának   a   szerver  nem  tulajdonít  jelentést,  csak
  262.           beállítja   ôket  illetve  kiolvassa  tartalmukat  a  kliens
  263.           utasítása szerint.
  264.  
  265.  
  266.                             @VA kliens feladatai@N
  267.  
  268.           Egy  kliens  programnak  is  több  dolgot  kell  elvégeznie:
  269.           elôször   is   meg   kell  teremtenie  a  kapcsolatot  az  X
  270.           szerverrel,  inicializálnia  kell  az  alapvetô objektumokat
  271.           (ablakok,  fontok  stb.),  és  le kell kezelnie az X szerver
  272.           által  hozzá közvetített eseményeket. Ezeket a dolgokat Xlib
  273.           szinten   mind   külön-külön  kell  megtenni,  míg  magasabb
  274.           szinteken    bonyolultabb    vezérlési   és   adatstruktúrák
  275.           igénybevételével    könnyebben    végezhetjük    el    ôket.
  276.           Gyakorlatilag   ez   annyit   jelent,   hogy   Xlib  szinten
  277.           programozva   minden   program   végén   ott  láthatunk  egy
  278.           eseménykezelô  ciklust,  az  Xt  viszont  lehetôvé  teszi (a
  279.           widgetekhez  kapcsolódóan)  azt, hogy bizonyos eseményekre a
  280.           megfelelô  válasz  típusát  elôre  megadjuk, így a programok
  281.           végén   csak   egy  hívást  találhatunk  az  Xt  magasszintû
  282.           eseménykezelô rutinjához.
  283.  
  284.           A  kliensek egymással is kommunikálnak a szerveren keresztül
  285.           a    postaládák    segítségével.    A    legtöbb   kliensnek
  286.           kommunikálnia  kell  például  az  ablakmenedzserrel.  Ez egy
  287.           speciális   program,   ez   kezeli   az  ablakok  átfedését,
  288.           átméretezését,   áthelyezését.  Ez  a  kliens  adja  meg  az
  289.           ablakok  dekorációját  is  (a  keretet, a kereten a gombokat
  290.           stb.).  Tulajdonképpen  ez  a  program határozza meg egy-egy
  291.           kezelési   felület   kinézetét.   Egy  ablak  létrehozásakor
  292.           például  megmondjuk  az  ablakmenedzsernek,  hogy  az ablak,
  293.           amit    létre    akarunk    hozni,   milyen   paraméterekkel
  294.           rendelkezzen  lehetôség  szerint (méret, elhelyezkedés stb.)
  295.           Az  ablakmenedzser  erre  úgy válaszol, hogy megmondja, hogy
  296.           milyen  valós  méretekkel  rendelkezik az ablak, a kliensnek
  297.           pedig e szerint kell folytatnia mûködését.
  298.  
  299.           A  kliens  feladata  tehát  végrehajtása esetén a szerverrel
  300.           való  kapcsolat  kezdeményezése,  az adatstruktúrák (például
  301.           widgetek)  inicializálása,  majd  az események lekezelése. A
  302.           legtöbb  elvégzendô  részfeladathoz  tartozhat  felhasználói
  303.           preferencia.   Elképzelhetô,  hogy  a  felhasználó  szeretné
  304.           megadni,  hogy  ez  meg  az  az ablak milyen színû legyen, a
  305.           ""Cancel"   helyett   inkább   ""Mégsem"   szerepeljen   egy
  306.           nyomógombon   stb.   Az  ilyen  típusú  feldatok  megoldását
  307.           segítik   az   erôforrásleíró  file-ok.  Az  Xt  a  widgetek
  308.           bizonyos   jellemzôit   (egy   gombra   írt   szöveg   stb.)
  309.           erôforrásként  kezeli,  és  egy-egy  program bármilyen ilyen
  310.           típusú  erôforrását  tetszôlegesen  meg tudjuk változtatni a
  311.           programon  kívülrôl,  egy erôforrásleíró file használatával.
  312.           Itt  tulajdonképpen  azt  írjuk le, hogy milyen erôforráshoz
  313.           milyen  értéket  rendelünk.  E  file-okat  az Xt futásidôben
  314.           megnézi, és a megfelelô erôforrásokat e szerint állítja be.
  315.  
  316.  
  317.                               @VHogyan tovább?@N
  318.  
  319.           Az  X  programozásának  elméleti  részének  ezzel  a  végére
  320.           értünk:  a  többi  rész már a gyakorlat, hiszen az elmondott
  321.           elvek  valahogy  megvalósításra  kerültek, és a gyakorlatban
  322.           is  alkalmazni  kell  ôket.  Bár  ez a cikk nem fedi le az X
  323.           programozásának  összes  elméleti  jellemzôjét,  az alapokat
  324.           megmutatja.  Ha  valaki  ennél mélyebben szeretné megismerni
  325.           az  X  programozását,  az  nehéz  feladat  elôtt  áll, mivel
  326.           Magyarországon  még  elég kevés ilyen típusú anyag van. Amit
  327.           tenni  lehet, az az, hogy beszerezzük egy-egy X programozási
  328.           tanfolyam  jegyzetét,  elolvassuk  az  1013  számú  RFC-t (X
  329.           Window  System  Protocol, Version 11.), az általunk elérhetô
  330.           dokumentációkat  stb. Az X Consortium példa X rendszere és a
  331.           hozzá  tartozó  dokumentáció  megtalálható a prep.ai.mit.edu
  332.           ftp  szerveren  (ez  az X Consortium hivatalos ftp szervere,
  333.           de  ugyanezeket  a dolgokat Magyarországon is megtalálhatjuk
  334.           például  a sunserv.sztaki.hu címen). Persze jóval egyszerûbb
  335.           dolga  van annak, aki hozzáfér idegennyelvû szakirodalomhoz,
  336.           ami -- a magyarhoz képest legalábbis -- elég bôséges.
  337.  
  338.           @KÉder Géza@N
  339.  
  340.  
  341.  
  342.           ┌──────────────────────────────────────────────────────────┐
  343.           │             @VAz X Window és a Windows különbségei@N         │▒
  344.           │                                                          │▒
  345.           │ Az X  egy ablakozó  rendszer, de  nem grafikus  kezelési │▒
  346.           │ felület -- az MS-Windows mindkettô.                      │▒
  347.           │                                                          │▒
  348.           │ Az X  nem egy  operációs rendszer,  hanem egy  protokoll │▒
  349.           │ köré   épül,   kihasználja   az   operációs   rendszerek │▒
  350.           │ alapszolgáltatásait  (bizonyos  fokú   erôforráskezelés, │▒
  351.           │ IPC stb.)                                                │▒
  352.           │                                                          │▒
  353.           │ Az   X   egy   egyetemi   fejlesztés   végeredménye,  az │▒
  354.           │ MS-Windowst  pedig  egy   cég  fejlesztette.  Ezért   az │▒
  355.           │ MS-Windows egyszerûbb, közvetlenül próbál  alkalmazkodni │▒
  356.           │ a felhasználók igényeihez; az X bonyolultabb, nem  célja │▒
  357.           │ az  ilyen   típusú  alkalmazkodás   (de  megadja   rá  a │▒
  358.           │ lehetôséget). Legfontosabb feladatai:                    │▒
  359.           │                                                          │▒
  360.           │ @V*@N     Grafikus     (raszteres)     ablakozó     rendszer │▒
  361.           │ megvalósítása;                                           │▒
  362.           │                                                          │▒
  363.           │ @V*@N Hálózati átlátszóság;                                  │▒
  364.           │                                                          │▒
  365.           │ @V*@N Eszközfüggetlenség.                                    │▒
  366.           └──────────────────────────────────────────────────────────┘▒
  367.            ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒